unsigned long shared_info_frame;
u64 cpu_time;
unsigned long max_memkb;
- u32 vcpu_to_cpu[MAX_VIRT_CPUS];
+ s32 vcpu_to_cpu[MAX_VIRT_CPUS];
cpumap_t cpumap[MAX_VIRT_CPUS];
} xc_dominfo_t;
int err, errno_saved;
dom0_op_t op;
u32 vcpu = 0; /* FIXME, hard coded initial pin to vcpu 0 */
- cpumap_t cpumap = 1<<cpu;
+ cpumap_t cpumap = 1 << cpu;
op.cmd = DOM0_CREATEDOMAIN;
op.u.createdomain.domain = (domid_t)*pdomid;
info->shared_info_frame = op.u.getdomaininfo.shared_info_frame;
info->cpu_time = op.u.getdomaininfo.cpu_time;
info->vcpus = op.u.getdomaininfo.n_vcpu;
- memcpy(info->vcpu_to_cpu, &op.u.getdomaininfo.vcpu_to_cpu,
- MAX_VIRT_CPUS*sizeof(u32));
- memcpy(info->cpumap, &op.u.getdomaininfo.cpumap,
- MAX_VIRT_CPUS*sizeof(cpumap_t));
+ memcpy(&info->vcpu_to_cpu, &op.u.getdomaininfo.vcpu_to_cpu,
+ sizeof(info->vcpu_to_cpu));
+ memcpy(&info->cpumap, &op.u.getdomaininfo.cpumap,
+ sizeof(info->cpumap));
next_domid = (u16)op.u.getdomaininfo.domain + 1;
info++;
domid_t dom = op->u.pincpudomain.domain;
struct domain *d = find_domain_by_id(dom);
struct exec_domain *ed;
- cpumap_t curmap, *cpumap = &curmap;
+ cpumap_t cpumap;
if ( d == NULL )
break;
}
- if ( copy_from_user(cpumap,
- op->u.pincpudomain.cpumap, sizeof(*cpumap)) )
+ if ( copy_from_user(&cpumap, op->u.pincpudomain.cpumap,
+ sizeof(cpumap)) )
{
ret = -EFAULT;
put_domain(d);
}
/* update cpumap for this ed */
- ed->cpumap = *(cpumap);
+ ed->cpumap = cpumap;
- if ( *(cpumap) == CPUMAP_RUNANYWHERE )
+ if ( cpumap == CPUMAP_RUNANYWHERE )
clear_bit(EDF_CPUPINNED, &ed->flags);
else
{
/* pick a new cpu from the usable map */
- int new_cpu = (int)find_first_set_bit(*(cpumap)) % smp_num_cpus;
+ int new_cpu = (int)find_first_set_bit(cpumap) % smp_num_cpus;
exec_domain_pause(ed);
if ( ed->processor != new_cpu )
break;
}
- memset(&op->u.getdomaininfo.vcpu_to_cpu,-1,MAX_VIRT_CPUS*sizeof(u8));
+ memset(&op->u.getdomaininfo.vcpu_to_cpu, -1,
+ sizeof(op->u.getdomaininfo.vcpu_to_cpu));
+ memset(&op->u.getdomaininfo.cpumap, 0,
+ sizeof(op->u.getdomaininfo.cpumap));
for_each_exec_domain ( d, ed ) {
op->u.getdomaininfo.vcpu_to_cpu[ed->id] = ed->processor;
op->u.getdomaininfo.cpumap[ed->id] = ed->cpumap;
memory_t shared_info_frame; /* MFN of shared_info struct */
u64 cpu_time;
u32 n_vcpu;
- u32 vcpu_to_cpu[MAX_VIRT_CPUS]; /* current mapping */
+ s32 vcpu_to_cpu[MAX_VIRT_CPUS]; /* current mapping */
cpumap_t cpumap[MAX_VIRT_CPUS]; /* allowable mapping */
} dom0_getdomaininfo_t;
void destroy_event_channels(struct domain *d);
int init_exec_domain_event_channels(struct exec_domain *ed);
-
#define CPUMAP_RUNANYWHERE 0xFFFFFFFF
+
struct exec_domain
{
int id;
atomic_t pausecnt;
- cpumap_t cpumap; /* which cpus this domain can run on */
+ cpumap_t cpumap; /* which cpus this domain can run on */
struct arch_exec_domain arch;
};